<?php
 Session_Start () ;
 Include ("../../include/garennes.cfg") ;
 Include ("../../include/init.php") ;
 Include ("../include/config.inc") ;
 verif_droits ($droit_courant, $_SESSION ["code"]) ;
 
 Include ("../../include/var_temp.inc") ;
 
 SQL_transmission (4) ;
 Include ("../../include/module_trombinoscope.php") ;
 Include ("../../include/phppdflib.class.php") ;
 Include ("../../include/tableaux_pdf.inc") ;
 
 $millesime = millesime (0) ;
 $numero_rne = retrouve_rne ($millesime) ; If (StrToUpper (SubStr (PHP_OS, 0, 3) == "WIN")) { $separateur = "\\" ; } Else { $separateur = "/" ; }
 
 $pdf = New pdffile ;
 $numero_page = 0 ;
 $classes = SQL_commande ("SELECT * FROM classes WHERE millesime='".$millesime."' ORDER BY nom_bref", $id_sql) ;
 For ($num_classe = 0 ; $num_classe < SQL_nbr_lignes ($classes) ; $num_classe++)
  {
   $cls = "\$classe_".$num_classe ; Eval ("\$cls = \"$cls\" ;") ;
   If ($cls > 0)
    {
     $x = 0 ;
     // Parametres bulletin PDF
     $bulletin_pdf_format = 0 ; // 0 : portrait ; 1 : paysage
     // !!!! MODE PAYSAGE A FAIRE -> UTILISER UNIQUEMENT LE MODE PORTRAIT
     $bulletin_pdf_hauteur = 842 ; // 595
     $bulletin_pdf_largeur = 595 ; // 842
     If ($bulletin_pdf_format)
      {
       $bulletin_pdf_rotation = 90 ;
       $bulletin_pdf_largeur_photo = 55 ;
       $bulletin_pdf_hauteur_photo = 78 ;
      }
     Else
      {
       $bulletin_pdf_rotation = 0 ;
       $bulletin_pdf_largeur_photo = 52 ;
       $bulletin_pdf_hauteur_photo = 75 ;
      }
     $bulletin_pdf_largeur_entete = $bulletin_pdf_largeur ;
     $bulletin_pdf_hauteur_entete = 50 ;
     $bulletin_pdf_marge_haut = 10 ;
     $bulletin_pdf_marge_bas = 10 ;
     $bulletin_pdf_marge_gauche = 10 ;
     $bulletin_pdf_marge_droite = 10 ;
     If ($bulletin_pdf_format) { $bulletin_pdf_nombre_photo_ligne = 8 ; }
     Else { $bulletin_pdf_nombre_photo_ligne = 6 ; }
     $bulletin_pdf_nombre_max_photo = 45 ;
     $bulletin_pdf_nombre_max_lignes = $bulletin_pdf_nombre_max_photo/$bulletin_pdf_nombre_photo_ligne ;
     $bulletin_pdf_largeur_emplacement = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$bulletin_pdf_nombre_photo_ligne ; // 105.25
     $bulletin_pdf_hauteur_emplacement = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$bulletin_pdf_nombre_max_lignes ; // = 495/6=99 
     $bulletin_pdf_espacement_haut = 1 ;
     $bulletin_pdf_espacement_milieu = 1 ;
     $bulletin_pdf_espacement_bas = 1 ;
     $bulletin_pdf_espacement_gauche = 2 ;
     $bulletin_pdf_espacement_droite = 2 ;
     
     // Taille photo
     //                                    20% - 33% - 100%
     $photo_bulletin_pdf_hauteur = 78 ; // 53  - 90  - 265
     $photo_bulletin_pdf_largeur = 55 ; // 38  - 65  - 189
     $nbr_photo_largeur_bulletin_pdf = 8 ;
     
     // Variables
     $nom_classe = nom_classe_long_parid ($cls) ;
     $rens_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$cls."' LIMIT 1", $id_sql) ;
     $rs_cl = SQL_tableau_associatif ($rens_classe, "") ;
 
     // Chercher les fiches eleves de la classe $id_classe
     $resultat = SQL_commande ("SELECT nom,prenoms,photo_traitee AS photo FROM tromb_utilisateurs
                                 WHERE id='".$cls."' AND type='0' ORDER BY nom,prenoms,photo_traitee", $id_sql) ;
     $nombre = SQL_nbr_lignes ($resultat) ;

     // Determine le nombre de photos par ligne
     If ($bulletin_pdf_format)
      {
       If ($nombre < 9) { $bulletin_pdf_nombre_photo_ligne = 3 ; }
       ElseIf ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
       ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 5 ; }
       ElseIf ($nombre < 36) { $bulletin_pdf_nombre_photo_ligne = 6 ; }
       ElseIf ($nombre < 41) { $bulletin_pdf_nombre_photo_ligne = 8 ; }
       Else { $bulletin_pdf_nombre_photo_ligne = 9 ; }
      }
     Else
      {
       If ($nombre < 9) { $bulletin_pdf_nombre_photo_ligne = 2 ; }
       ElseIf ($nombre < 13) { $bulletin_pdf_nombre_photo_ligne = 3 ; }
       ElseIf ($nombre < 21) { $bulletin_pdf_nombre_photo_ligne = 4 ; }
       ElseIf ($nombre < 36) { $bulletin_pdf_nombre_photo_ligne = 5 ; }
       Else { $bulletin_pdf_nombre_photo_ligne = 6 ; }
      }
 
     // Calcul le nombre de lignes et le reste sur la derniere 
     $nbr_lg = Floor ($nombre/$bulletin_pdf_nombre_photo_ligne) ;
     $nbr_reste = $nombre%$bulletin_pdf_nombre_photo_ligne ;
 
     // Calcul le nombre totale de ligne meme non remplie (pour la derniere)
     $nbr_ligne_total = $nbr_lg ;
     If ($nbr_reste) { $nbr_ligne_total++ ; }
     
     // Calcul de la taille du rectangle de toutes les photos
     $taille_x = $bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne ;
     $taille_y = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total ;
     $echelle_x = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite)/$taille_x ;
     $echelle_y = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas)/$taille_y ;
     If ($echelle_x < $echelle_y) { $echelle = $echelle_y ; }
     Else { $echelle = $echelle_x ; }
     If ($echelle_y > 3) { $echelle_y = 3 ; }
     If ($echelle_x > 3) { $echelle_x = 3 ; }
     If ($echelle > 2) { $echelle = 2 ; }
     
     $bulletin_pdf_largeur_photo *= $echelle ;
     $bulletin_pdf_hauteur_photo *= $echelle ;
     $bulletin_pdf_largeur_emplacement *= $echelle_x ;
     $bulletin_pdf_hauteur_emplacement *= $echelle_y ;
     $bulletin_pdf_espacement_image = ($bulletin_pdf_largeur_emplacement-$bulletin_pdf_largeur_photo)/2 ;
     $bulletin_pdf_marge_interieure_hauteur = ($bulletin_pdf_hauteur-$bulletin_pdf_hauteur_entete-$bulletin_pdf_marge_haut-$bulletin_pdf_marge_bas-$bulletin_pdf_hauteur_emplacement*$nbr_ligne_total)/2 ;
     $bulletin_pdf_marge_interieure_largeur = ($bulletin_pdf_largeur-$bulletin_pdf_marge_gauche-$bulletin_pdf_marge_droite-$bulletin_pdf_largeur_emplacement*$bulletin_pdf_nombre_photo_ligne)/2 ;
     
     // Cherche le nom de la classe
     $nom_classe = SQL_commande ("SELECT * FROM classes WHERE id_classe='".$cls."' LIMIT 1", $id_sql) ;
     $cl = SQL_tableau_associatif ($nom_classe, "") ;
     
     // Recherche nom prof principal
     $resultat_prof_p = SQL_commande ("SELECT u.nom,u.prenom,u.civilite,u.droits FROM utilisateurs u,classes c
                                        WHERE c.id_classe='".$cls."' AND c.id_prof_princ=u.id_utilisateur LIMIT 1", $id_sql) ;
     
     $numero_page = $numero_page + 1 ;
     $page [$numero_page] = $pdf->New_Page ("a4") ;
     
     // Entete
     $param ["height"] = "28" ;
     $param ["width"] = 1 ;
     $param ["font"] = "Helvetica" ;
     $param ["red"] = 0 ;
     $param ["green"] = 0 ;
     $param ["blue"] = 0 ;
     $pdf->Draw_Text ($x+$bulletin_pdf_marge_gauche+10,
                      $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
    	    	      $cl ["nom"]."(".$cl ["nom_bref"].")",
    		      $page [$numero_page], $param) ;
     $pdf->Draw_Text ($bulletin_pdf_largeur-$bulletin_pdf_marge_droite-150,
                      $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-25,
                      $millesime."-".($millesime+1),
		      $page [$numero_page], $param) ;
 
     If (SQL_nbr_lignes ($resultat_prof_p))
      {
       $prof_princ = SQL_tableau_associatif ($resultat_prof_p, "") ;
       If ($prof_princ ["droits"] == $droit_prof)
        {
         $param ["height"] = "10" ;
         If (StrPos (" ", $prof_princ ["prenom"]))
          {
           $prenom = SubStr ($prof_princ ["prenom"], 0, StrPos (" ", $prof_princ ["prenom"])) ;
          }
         Else
          { $prenom = $prof_princ ["prenom"] ; }
         $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubSTr ($prenom, 1, StrLen ($prenom)-1)) ;
         Switch ($prof_princ ["civilite"])
          {
           Case  0 : $civilite = "Mme" ; Break ;
           Case  1 : $civilite = "Mle" ; Break ;
           Case  2 : $civilite = "M." ; Break ;
           Default : $civilite = "M." ; Break ;
          }
         $pdf->Draw_Text ($x+$bulletin_pdf_marge_gauche+10,
                          $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-40,
                          "Professeur principal : ".$civilite." ".$prenom." ".StrToUpper ($prof_princ ["nom"]),
    		          $page [$numero_page], $param) ;
        }
      }
 
     // Position depart
     $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
     // Recherche le repertoire de retaillage
     $rep_retaillage = retrouve_variable ("repertoire_traitees_eleve").$numero_rne.$separateur ;
     For ($i = 0 ; $i < $nbr_lg ; $i++)
      {
       For ($j = 0 ; $j < $bulletin_pdf_nombre_photo_ligne ; $j++)
        {
         $x = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x ;
         $eleve = SQL_tableau_associatif ($resultat, "") ;
	 // Determine la photo a utiliser
         If (($eleve ["photo"]) And (File_Exists ($repertoire_racine.$rep_retaillage.$eleve ["photo"])))
	  { $fiche_photo = $repertoire_racine.$rep_retaillage.$eleve ["photo"] ; }
         ElseIf (File_Exists ($repertoire_racine.$rep_retaillage."anonyme.png")) { $fiche_photo = $repertoire_racine.$rep_retaillage."anonyme.png" ; }
         Else { $fiche_photo = "" ; }
	 
         If ($fiche_photo)
          {
           $photo = FOpen ($fiche_photo, "r") ;
           $donnees = FRead ($photo, FileSize ($fiche_photo)) ;
           FClose ($photo) ;
           $image = $pdf->jfif_embed ($donnees) ;
           $taille = $pdf->Get_Image_Size ($image) ;
           If ($taille ["height"]) { $echelle = $bulletin_pdf_hauteur_photo/$taille ["height"] ; }
           Else { $echelle = 1 ; }
           $pdf->Image_Place ($image, $y+($bulletin_pdf_espacement_bas+$bulletin_pdf_espacement_milieu+18)*$echelle_y,
                              $x+$bulletin_pdf_espacement_image, $page [$numero_page], $echelle, 0) ;
          }

         // Nom
         $param ["width"] = 1 ;
         $param ["font"] = "Helvetica-Bold" ;
         $param ["red"] = 0 ;
         $param ["green"] = 0 ;
         $param ["blue"] = 0 ;
         If (StrPos ($eleve ["prenoms"], " ")) { $prenom = SubStr ($eleve ["prenoms"], 0, StrPos ($eleve ["prenoms"], " ")) ; }
         Else { $prenom = $eleve ["prenoms"] ; }
         $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
	 If ($imprimer_nom_photo)
	  {
	   $texte = $eleve ["nom"]." ".$prenom." (".$eleve ["photo"].")" ;
	   $param ["height"] = "9" ;
	  }
	 Else
	  {
	   $texte = $eleve ["nom"]." ".$prenom ;
	   $param ["height"] = "10" ;
	  }
         $pdf->Draw_Paragraph ($y+($bulletin_pdf_espacement_bas+20)*$echelle_y-1,
                               $x+$bulletin_pdf_espacement_gauche*$echelle_x,
    			       $y+$bulletin_pdf_espacement_bas,
    			       $x+$bulletin_pdf_largeur_emplacement-$bulletin_pdf_espacement_droite*$echelle_x,
			       filtrage_utf8 ($texte), $page [$numero_page], $param) ;
    			       //$eleve ["nom"]." ".$prenom, $page [$numero_page], $param) ;
			       //$eleve ["photo"], $page [$numero_page], $param) ;
        }
       $y = $y - $bulletin_pdf_hauteur_emplacement ;
      }
     If ($nbr_reste)
      {
       For ($j = 0 ; $j < $nbr_reste ; $j++)
        {
         $x = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x ;
         $eleve = SQL_tableau_associatif ($resultat, "") ;
	 // Determine la photo a utiliser
         If (($eleve ["photo"]) And (File_Exists ($repertoire_racine.$rep_retaillage.$eleve ["photo"])))
	  { $fiche_photo = $repertoire_racine.$rep_retaillage.$eleve ["photo"] ; }
         ElseIf (File_Exists ($repertoire_racine.$rep_retaillage."anonyme.png")) { $fiche_photo = $repertoire_racine.$rep_retaillage."anonyme.png" ; }
         Else { $fiche_photo = "" ; }
	 
         If ($fiche_photo)
          {
           $photo = FOpen ($fiche_photo, "r") ;
           $donnees = FRead ($photo, FileSize ($fiche_photo)) ;
           FClose ($photo) ;
           $image = $pdf->jfif_embed ($donnees) ;
           $taille = $pdf->Get_Image_Size ($image) ;
           If ($taille ["height"]) { $echelle = $bulletin_pdf_hauteur_photo/$taille ["height"] ; }
           Else { $echelle = 1 ; }
           //$ech_y = $bulletin_pdf_largeur_photo/$taille ["width"] ;
           $pdf->Image_Place ($image, $y+$bulletin_pdf_espacement_bas+$bulletin_pdf_espacement_milieu+18*$echelle_y,
                              $x+$bulletin_pdf_espacement_image, $page [$numero_page], $echelle, 0) ;
          }
    
         // Nom
         $param ["height"] = "10" ;
         $param ["width"] = 1 ;
         $param ["font"] = "Helvetica-Bold" ;
         $param ["red"] = 0 ;
         $param ["green"] = 0 ;
         $param ["blue"] = 0 ;
         If (StrPos ($eleve ["prenoms"], " ")) { $prenom = SubStr ($eleve ["prenoms"], 0, StrPos ($eleve ["prenoms"], " ")) ; }
         Else { $prenom = $eleve ["prenoms"] ; }
         $prenom = StrToUpper (SubStr ($prenom, 0, 1)).StrToLower (SubStr ($prenom, 1, StrLen ($prenom)-1)) ;
	 If ($imprimer_nom_photo) { $texte = $eleve ["photo"] ; } Else { $texte = $eleve ["nom"]." ".$prenom ; }
         $pdf->Draw_Paragraph ($y+($bulletin_pdf_espacement_bas+20)*$echelle_y-1,
                               $x+$bulletin_pdf_espacement_gauche*$echelle_x,
    			       $y+$bulletin_pdf_espacement_bas,
    			       $x+$bulletin_pdf_largeur_emplacement-$bulletin_pdf_espacement_droite*$echelle_x,
			       filtrage_utf8 ($texte), $page [$numero_page], $param) ;
    			       //$eleve ["nom"]." ".$prenom, $page [$numero_page], $param) ;
			       //$eleve ["photo"], $page [$numero_page], $param) ;
        }
      }

     $param ["width"] = 1 ;
     $param ["red"] = 0 ;
     $param ["green"] = 0 ;
     $param ["blue"] = 0 ;
     $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x ;
     $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite ;
     $yy [0] = $yy [1] = $bulletin_pdf_hauteur-$bulletin_pdf_marge_haut-50-$bulletin_pdf_marge_interieure_hauteur ;
     $pdf->Draw_Line ($xx, $yy, $page [$numero_page], $param) ;
     $y = $bulletin_pdf_hauteur_emplacement*($nbr_ligne_total-1)+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
     For ($i = 0 ; $i < $nbr_ligne_total ; $i++)
      {
       $xx [0] = $bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
       $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
       $yy [0] = $yy [1] = $y ;
       $pdf->Draw_Line ($xx, $yy, $page [$numero_page], $param) ;
       $y = $y - $bulletin_pdf_hauteur_emplacement ;
      }
     $y_init = $bulletin_pdf_hauteur_emplacement*$nbr_ligne_total+$bulletin_pdf_marge_bas+$bulletin_pdf_marge_interieure_hauteur ;
     $y_final = $y+$bulletin_pdf_hauteur_emplacement ;
     For ($j = 0 ; $j < $bulletin_pdf_nombre_photo_ligne ; $j++)
      {
       $xx [0] = $xx [1] = $bulletin_pdf_largeur_emplacement*$j+$bulletin_pdf_marge_gauche*$echelle_x+$bulletin_pdf_marge_interieure_largeur ;
       $yy [0] = $y_init ;
       $yy [1] = $y_final ;
       $pdf->Draw_Line ($xx, $yy, $page [$numero_page], $param) ;
      }
     $xx [0] = $xx [1] = $bulletin_pdf_largeur-$bulletin_pdf_marge_droite-$bulletin_pdf_marge_interieure_largeur ;
     $yy [0] = $y_init ;
     $yy [1] = $y_final ;
     $pdf->Draw_Line ($xx, $yy, $page [$numero_page], $param) ;
    }
  }

 Header ("Content-Disposition: inline; filename=trombinoscope.pdf");
 Header ("Content-Type: application/pdf");
 Echo $pdf->Generate () ;
?>